home *** CD-ROM | disk | FTP | other *** search
- package engine.dynamicObjects
- {
- import engine.BitmapLibrary;
- import engine.WorldScene;
-
- public class GiantTentacle
- {
-
-
- public var y:Number = 0;
-
- private var _inOutTimer:Number;
-
- private var _curl:Number = 0;
-
- private var _curlAccel:Number = 0;
-
- public var baseX:Number = 0;
-
- public var baseY:Number = 0;
-
- private var _inOutTimeLength:Number = 250;
-
- public var hiddenX:Number = 0;
-
- public var hiddenY:Number = 0;
-
- public var r:Number = 0;
-
- public var x:Number = 0;
-
- private var _inertia:Number = 0;
-
- private var _curlTarget:Number = 0;
-
- private var _segments:Array;
-
- public function GiantTentacle()
- {
- baseX = 0;
- baseY = 0;
- hiddenX = 0;
- hiddenY = 0;
- x = 0;
- y = 0;
- r = 0;
- _segments = new Array();
- _inertia = 0;
- _curl = 0;
- _curlAccel = 0;
- _curlTarget = 0;
- _inOutTimer = Math.random() * 220;
- _inOutTimeLength = 250;
- super();
- }
-
- protected function getVector(inRadians:Number, inVelocity:Number) : Object
- {
- var vX:Number = NaN;
- var vY:Number = NaN;
- vX = inVelocity * Math.cos(inRadians);
- vY = inVelocity * Math.sin(inRadians);
- return {
- "x":vX,
- "y":vY
- };
- }
-
- public function fStep() : *
- {
- var tx:Number = NaN;
- var ty:Number = NaN;
- var i:* = undefined;
- var seg:* = undefined;
- --_inOutTimer;
- if(_inOutTimer < -_inOutTimeLength)
- {
- _inOutTimer = _inOutTimeLength;
- }
- if(_inOutTimer < 0)
- {
- tx = hiddenX;
- ty = hiddenY;
- }
- else
- {
- tx = baseX;
- ty = baseY;
- }
- if(Math.abs(tx - x) > 20 || Math.abs(ty - y) > 20)
- {
- _inOutTimer += 0.5;
- if(_inertia < 0.2)
- {
- _inertia += 0.001;
- }
- }
- else
- {
- _inertia *= 0.85;
- }
- x += (tx - x) * (_inertia * 0.5);
- y += (ty - y) * (_inertia * 0.5);
- _segments[0].segX = x;
- _segments[0].segY = y;
- if(Math.random() < 0.01)
- {
- _curlTarget = Math.random() * 1 - 0.5;
- }
- if(_curlTarget > _curl)
- {
- if(_curlAccel < 0.03)
- {
- _curlAccel += 0.0008;
- }
- }
- if(_curlTarget < _curl)
- {
- if(_curlAccel > -0.03)
- {
- _curlAccel -= 0.0008;
- }
- }
- _curl += _curlAccel;
- for(i = 0; i < _segments.length; i++)
- {
- seg = _segments[i];
- _segments[i].rOffset = _curl * (1 + 0.053 * i);
- }
- }
-
- public function init() : *
- {
- var seg:TentacleSegment = null;
- var i:* = undefined;
- x = hiddenX;
- y = hiddenY;
- _inOutTimeLength = 400;
- _inOutTimer = Math.random() * _inOutTimeLength;
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_01);
- seg.rOffsetBase = r;
- seg.segX = x;
- seg.segY = y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_02);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_03);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_04);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_05);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_06);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_07);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_08);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_09);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_10);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_11);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- seg = new TentacleSegment(BitmapLibrary.Stills.DYN_TSeg_12);
- seg.rOffsetBase = r;
- seg.prevSeg = _segments[_segments.length - 1];
- seg.x = seg.prevSeg.x;
- seg.y = seg.prevSeg.y;
- _segments.push(seg);
- for(i = 0; i < _segments.length; i++)
- {
- WorldScene.Instance.addGPObject(_segments[i]);
- _segments[i].segNum = i + 1;
- _segments[i].rOffsetRand = Math.random() * 1.5 - 0.7;
- }
- _curlTarget = Math.random() * 1.5 - 0.75;
- _segments[0].tentacleR = r;
- }
- }
- }
-